package com.mm.etl

import com.mm.utils.EtlUtil
import org.apache.spark.sql.SparkSession

object MetroSiteELTJob {
  def main(args: Array[String]): Unit = {
    // 在windows下开发时设置
//    System.setProperty("HADOOP_USER_NAME", "hduser")

    // 创建SparkSession
    val spark = SparkSession.builder()
//      .master("local[*]")
      .appName("jt OD")
      .enableHiveSupport()     // 启动hive支持
      .getOrCreate()

    // 对地铁刷卡数据执行ELT
    metroSiteELTask(spark)

    // 关闭SparkSession
    spark.close()
  }

  // 地铁站点数据ELT方法
  def metroSiteELTask(spark: SparkSession): Unit = {
    // 1. 定义文件数据源配置
    val DB_URL= "jdbc:mysql://192.168.190.133:3306/jt?useSSL=false"       // 数据库连接url
    val metroJdbcMap = Map(
      "url" -> DB_URL,                	// jdbc url
      "dbtable" -> "metro_station_tb",  // 要读取的数据表
      "user" -> "root",               	// mysql账号
      "password" -> "admin"           	// mysql密码
    )

    // 2. 定义Hive配置
    val hiveOptions = Map("db" -> "jt", "tb" -> "metro_station_tb")

    // 3. 执行ELT
//    EtlUtil.extractFromJDBC(spark, metroJdbcMap).show()    // 测试
    EtlUtil.eltFromJDBCToHive(spark, metroJdbcMap, hiveOptions)

    spark.table("jt.metro_station_tb").show(5)
  }
}
